package ar.frba.utn.diseñosistemas.TP2;


public class BuscadorBuilder {

	private IBuscador construccion;
	
	public BuscadorBuilder()
	{
		this.construccion = new Buscador(AterrizarSingleton.getInstance().getAerolineas());
	}
	
	public BuscadorBuilder agregarRecargo(float recargo)
	{
		construccion = new ConRecargo(construccion, recargo);
		return this;
	}
	
	public BuscadorBuilder excluirSuperOfertas()
	{
		construccion = new SinSuperOferta(construccion);
		return this;
	}
	
	public BuscadorBuilder conFiltroPorClase()
	{
		construccion = new FiltrarPorClase(construccion);
		
		return this;
	}
	
	public BuscadorBuilder conFiltroPorUbicacion()
	{
		construccion = new FiltrarPorUbicacion(construccion);
		
		return this;
	}
	
	public BuscadorBuilder conFiltroPorPrecio()
	{
		construccion = new FiltrarPorPrecio(construccion);
		
		return this;
	}
	
	public BuscadorBuilder conFiltroPorReservado()
	{
		this.construccion = new FiltroPorReservados(construccion);
		return this;
	}
	
	public BuscadorBuilder ordenar(IOrdenamiento ordenamiento)
	{
		if (ordenamiento != null)
			this.construccion = new Ordenar(construccion, ordenamiento);
		
		return this;
	}
	
	public IBuscador Construir()
	{
		return this.construccion;
	}
}
